package br.com.seosoft.simplecalcfinan.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.util.Log;
import br.com.seosoft.simplecalcfinan.geral;

public class Caixa implements IBancos {

	public final static String SMS_BOLETO = "CAIXA informa: Pagamento de boleto, 284,92, conta ******95-1,  15/02/2013 as  10:52, INTERNET BANKING. Duvidas: 0800-726-0104";
	public final static String CAIXA_INFORMA = "CAIXA informa:";
	public final static String PAGAMENTO_BOLETO = " Pagamento de boleto, ";
	public final static String CONTA = ", conta ";
	public final static String AS = " as  ";
	public final static String VIRGULA = ",  ";
	public final static String INTERNET_BANKING = ", INTERNET BANKING. ";
	private String smsMensagem;

	public Caixa(String mensagem) {

		smsMensagem = mensagem;
	}

	@Override
	public Double getValor() {
		// TODO Auto-generated method stub
		int inicio, fim;
		String valorAux;
		Double valor;

		if (smsMensagem != null || !"".equals(smsMensagem)) {

			try {
				if (smsMensagem.contains(PAGAMENTO_BOLETO)) {

					inicio = smsMensagem.indexOf(PAGAMENTO_BOLETO)
							+ PAGAMENTO_BOLETO.length();
					fim = smsMensagem.indexOf(CONTA);

					valorAux = smsMensagem.substring(inicio, fim);
					valorAux = valorAux.trim();
					valorAux = valorAux.replace(".", "");
					valorAux = valorAux.replace(",", ".");

					valor = Double.valueOf(valorAux);
					Log.v(geral.LogCat, "CAIXA: getValor: " + -valor);

					return -valor;
				}

			} catch (Exception e) {
				// TODO Auto-generated catch block
				Log.v(geral.LogCat, "CAIXA: getValor: nulo" + e.getMessage());
				return null;
			}

		} else {
			Log.v(geral.LogCat, "CAIXA: getValor: nulo");
		}
		return null;
	}

	@Override
	public Date getData() {
		// TODO Auto-generated method stub
		int inicio, fim;
		Date data;
		DateFormat formatar;
		String dataAux;

		if (smsMensagem != null || !"".equals(smsMensagem)) {

			try {
				if (smsMensagem.contains(PAGAMENTO_BOLETO)) {

					inicio = smsMensagem.indexOf(VIRGULA) + VIRGULA.length();
					fim = smsMensagem.indexOf(INTERNET_BANKING);

					dataAux = smsMensagem.substring(inicio, fim);
					dataAux = dataAux.trim();
					dataAux = dataAux.replace(AS, " ");

					formatar = new SimpleDateFormat("dd/MM/yyyy H:m");

					Log.v(geral.LogCat, "CAIXA: getData: " + dataAux);

					try {

						data = formatar.parse(dataAux);

						return data;

					} catch (ParseException e) {
						// TODO Auto-generated catch block
						Log.v(geral.LogCat,
								"CAIXA: getData: erro : " + e.getMessage());
						return null;

					}

				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				Log.v(geral.LogCat, "CAIXA: getData: nulo" + e.getMessage());
				return null;
			}
		} else {

			Log.v(geral.LogCat, "CAIXA: getData: nulo");
		}
		return null;

	}

	@Override
	public String getDescricao() {
		// TODO Auto-generated method stub
		
		if (smsMensagem != null || !"".equals(smsMensagem)) {
			
			try {
				
				if (smsMensagem.contains(PAGAMENTO_BOLETO)) {
					
					Log.v(geral.LogCat, "CAIXA: getDescri����o: Pagamento de Boleto");
					
					return "CAIXA: Pagamento de Boleto";
					
				}
				
			} catch (Exception e) {
				
				Log.v(geral.LogCat, "CAIXA: getDescri����o: nulo" + e.getMessage());
				return null;
			}
			
			Log.v(geral.LogCat, "CAIXA: getDescri����o: nulo");
		}
		return null;
	}

	@Override
	public String getNomebanco() {
		// TODO Auto-generated method stub
		return "CAIXA";
	}

}
